<html>
<body>
Reports <code>break</code> or <code>continue</code> usages inside of lambdas of loop-like functions.
<p>
    <code>break</code> and <code>continue</code> keywords always apply to the real loops (<code>for</code>,
    <code>while</code>, <code>do-while</code>). <code>break</code> and <code>continue</code> never apply to any function; for example,
    <code>break</code> and <code>continue</code> don't apply to <code>forEach</code>, <code>filter</code>, <code>map</code>.
</p>
<p>
    Using <code>break</code> or <code>continue</code> inside a loop-like function (for example, <code>forEach</code>) may be confusing.
    The inspection suggests adding a label to clarify to which statement <code>break</code> or <code>continue</code> applies to.
</p>
<p>
    Since Kotlin doesn't have a concept of loop-like functions, the inspection uses the heuristic. It assumes that functions that don't
    have one of <code>callsInPlace(EXACTLY_ONCE)</code> or <code>callsInPlace(AT_LEAST_ONCE)</code> contracts are loop-like functions.
</p>
<p><b>Example:</b></p>
<pre><code>
    for (file in files) {
        file.readLines().forEach { line ->
            if (line == commentMarkerLine) continue
            println(line)
        }
    }
</code></pre>
<p>The quick-fix adds clarifying labels:</p>
<pre><code>
    loop@ for (file in files) {
        file.readLines().forEach { line ->
            if (line == commentMarkerLine) continue@loop
            println(line)
        }
    }
</code></pre>
<!-- tooltip end -->
</body>
</html>